/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.gob.fonafe.dao.impl.stored;

import java.sql.Types;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import oracle.jdbc.OracleTypes;
import org.springframework.jdbc.core.SqlOutParameter;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.core.support.SqlLobValue;
import org.springframework.jdbc.object.StoredProcedure;
import pe.gob.fonafe.domain.SubastaBean;

/**
 *
 * @author czela
 */
public class RegistraSubastaSP extends StoredProcedure{

    private static final String PROC_PARAM="USERGLC.P_REGISTRA_SUBASTA";

    public RegistraSubastaSP(DataSource ds) {
        super(ds, PROC_PARAM);

        declareParameter(new SqlParameter("P_tb_TipoSub_Id_TipoSub", Types.VARCHAR));
        declareParameter(new SqlParameter("P_tb_Usuario_id_usuario", Types.VARCHAR));
        declareParameter(new SqlParameter("P_NOMBRE", Types.VARCHAR));
        declareParameter(new SqlParameter("P_FECHA_VENCIMIENTO", Types.DATE));
        declareParameter(new SqlParameter("P_BASES", OracleTypes.BLOB));
        declareParameter(new SqlParameter("P_TB_CLASE_SUB_id_Clase_Sub", Types.INTEGER));
        declareParameter(new SqlParameter("P_ESTADO", Types.VARCHAR));
        declareParameter(new SqlParameter("P_nombreArchivoBase", Types.VARCHAR));
        declareParameter(new SqlParameter("P_extArchivoBase", OracleTypes.VARCHAR));
        declareParameter(new SqlOutParameter("V_MENSAJE", Types.VARCHAR));
        declareParameter(new SqlOutParameter("V_EXITO", Types.VARCHAR));
        declareParameter(new SqlOutParameter("V_VERSION", Types.VARCHAR));

        compile();
    }

    public Map execute(String idUsuario,SubastaBean subasta,byte[] bases,String nombases,String contentTypeBase){
        Map inputs = new HashMap();
        inputs.put("P_tb_TipoSub_Id_TipoSub", subasta.getTipo());
        inputs.put("P_tb_Usuario_id_usuario", idUsuario);
        inputs.put("P_NOMBRE", subasta.getNombre());
        inputs.put("P_FECHA_VENCIMIENTO", subasta.getFechVencimiento());
        inputs.put("P_BASES", new SqlLobValue(bases));
        inputs.put("P_TB_CLASE_SUB_id_Clase_Sub", Integer.valueOf(subasta.getClase()));
        inputs.put("P_ESTADO", subasta.getEstado());
        inputs.put("P_nombreArchivoBase", nombases);
        inputs.put("P_extArchivoBase",contentTypeBase);
        return super.execute(inputs);
    }

  }
